package com.sprint.questai.kb;

import com.sprint.questai.model.dto.response.ChunkResponse;
import com.sprint.questai.module.kb.KnowledgeService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;
import java.util.List;

/**
 * @Author: mayixiang
 * @Date: 2024/6/14 10:21
 * @Description: 测试知识库服务
 */
@SpringBootTest
public class kbtest {

    @Autowired
    KnowledgeService knowledgeService;
    final String KBID ="CBySw9WO3xujNSGx";
    final String laodongkbid="l2VzaSJNcV3ljpBBftAQ";
    /**
     * 测试创建知识库条目
     * @throws IOException 如果发生IO异常
     */

    @Test
    public void testCreateKnowledge() throws IOException {
        // 创建一个新的知识库条目，内容为"123456"
        knowledgeService.createKnowledge("123456");
    }

    /**
     * 测试添加分块嵌入到知识库
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void testAddChunkEmbedding() throws IOException {
        // 更新知识库ID为CBySw9WO3xujNSGx的条目，添加内容为"chunk"的嵌入
        knowledgeService.updateChunkEmbedding(KBID, "chunk");
    }

    /**
     * 测试通过知识库ID搜索分块
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void testSearchChunk() throws IOException {
        // 根据知识库ID搜索所有的分块
        knowledgeService.searchChunkByKnowledgeId(KBID);
    }

    /**
     * 测试添加空的分块到知识库
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void testAdd() throws IOException {
        // 添加一个空的分块到知识库ID为CBySw9WO3xujNSGx的条目
        knowledgeService.addEmptyChunk(KBID);
        // 可以根据需要添加具体内容
        // knowledgeService.addChunk(KBID, "具体内容");
    }

    /**
     * 测试刷新知识库索引
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void testSearchChunks() throws IOException {
        // 刷新知识库ID为CBySw9WO3xujNSGx的索引
        knowledgeService.refreshKBIndex(KBID);
    }

    /**
     * 测试通过分块文本搜索分块ID
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void testSearchChunkIdByKnowledgeId() throws IOException {
        // 根据分块内容“chunk”搜索对应的分块ID
        String s = knowledgeService.searchChunkIdByChunkText(KBID, "chunk");
        System.out.println(s);
    }

    /**
     * 测试删除分块
     * @throws IOException 如果发生IO异常
     */
    @Test
    public void deleteChunk() throws IOException {
        // 删除分块ID为SwhkIZABOzUgU4TQYImt的条目
        knowledgeService.deleteByChunkId("SwhkIZABOzUgU4TQYImt");
    }
    @Test
    public void searchCHunk() throws IOException {
        knowledgeService.searchChunkIdByChunkText(laodongkbid,"第二十九条劳动者有下列情形之一的，用人单位不得依据本法第二十六条、第二十七条的规定解除劳动合同：（一）患职业病或者因工负伤并被确认丧失或者部分丧失劳动能力的；（二）患病或者负伤，在规定的医疗期内的；（三）女职工在孕期、产期、哺乳期内的；（四）法律、行政法规规定的其他情形。");
    }

}
